import { IPSModelObject } from '../../ipsmodel-object';
import { IPSDEOPPriv } from '../priv/ipsdeoppriv';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysImage } from '../../res/ipssys-image';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEDRDetail
 */
export interface IPSDEDRDetail extends IPSModelObject {
  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  get capPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageResMust(): IPSLanguageRes;

  /**
   * 标题
   * @type {string}
   */
  caption: string;

  /**
   * 计数项标识
   * @type {string}
   */
  counterId: string;

  /**
   * 成员类型
   * @description 值模式 [关系界面组成员类型] {DRITEM：关系界面、 PDTVIEW：预置视图 }
   * @type {( string | 'DRITEM' | 'PDTVIEW')}
   */
  detailType: string | 'DRITEM' | 'PDTVIEW';

  /**
   * 启用模式
   * @description 值模式 [关系界面组成员启用模式] {ALL：全部启用、 INWF：流程中启用、 ALLWF：全部流程状态启用、 EDIT：编辑时启用、 DEOPPRIV：实体操作标识、 CUSTOM：自定义 }
   * @type {( string | 'ALL' | 'INWF' | 'ALLWF' | 'EDIT' | 'DEOPPRIV' | 'CUSTOM')}
   */
  enableMode: string | 'ALL' | 'INWF' | 'ALLWF' | 'EDIT' | 'DEOPPRIV' | 'CUSTOM';

  /**
   * 排序值
   * @type {number}
   */
  orderValue: number;

  /**
   * 原始标题
   * @type {string}
   */
  originCaption: string;

  /**
   * 展开树视图标识
   * @type {string}
   */
  psDETreeId: string;

  /**
   * 展开树视图标识
   * @type {string}
   */
  getPSDETreeId(): string;

  /**
   * 成员图标资源对象
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 成员图标资源对象
   *
   * @type {IPSSysImage}
   */
  get psSysImage(): IPSSysImage | null;

  /**
   * 成员图标资源对象（必须存在）
   *
   * @type {IPSSysImage}
   */
  getPSSysImageMust(): IPSSysImage;

  /**
   * 判断输出实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getTestPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 判断输出实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get testPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 判断输出实体操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getTestPSDEOPPrivMust(): IPSDEOPPriv;
}
